In conventional messaging systems, especially conventional message-oriented middleware and enterprise service buses, a message consumer (e.g., a client application) typically receives messages via a particular server that is local to a home location of the message consumer. For example, a message consumer may run on a mobile laptop computer that is typically connected to a server at the company office where the user of the laptop computer works. The message producer (e.g., another application program that together with the client application forms a distributed application) may be hosted on a non-mobile server. In such conventional systems, the communication routes between the message producer(s) and the message consumer(s) brokers are statically defined at system setup, often based on the connections of message consumers who exist at the time that the network is first configured. Subsequently, the communication routes are manually reconfigured by network administrators as needed. For example, when the user of the message consuming application is transferred from one office to another, the network administrator may configure the messaging network to route messages needed by the message consumer to the server at the new office where the user is now located.
Conventional reconfiguring of the messaging network, however, is unsatisfactory when a message consumer is frequently mobile, as in the case of a user (message consumer) who frequently travels from office to office. In this situation, the message consumer will not receive messages when connected to a “non-home” server, until and unless the messaging network is reconfigured to route the consumer's messages to the non-home server. Such reconfiguring is often complicated and time consuming. One possible solution is to configure the messaging system to distribute the consumer's messages to all of the messaging servers in the network, so that the consumer receives messages no matter which server he or she is currently connected to. But this solution has several drawbacks. Among them is an inefficient and unnecessary use of system resources, such as communication bandwidth between messaging servers, as well as processing and storage resources on each individual messaging server, as the system continuously forwards messages to servers that are not connected to the message consumer. Another drawback is increased and unnecessary security risks, as messages traverse communications links between messaging servers, and are stored, at least briefly, on messaging servers in portions of the network that do not lead to the message consumer.
Accordingly, it is desirable to provide systems and methods that address the problems and drawbacks of conventional messaging networks.